  Apple // Game Server

Play the classics on your Woz machine without a floppy disk!

  Basics

    * I can't find what I'm looking for in this FAQ.  What do I do now?
          o Go to the forums associated with this project.  Follow the
            "Project Home" link above and there you should be able to
            find the project forums.  Either myself or other folks will
            be more than happy to try to help.
    * Does this support disk images used in emulators? (e.g. .dsk, .do,
      .po files)
          o Not yet.  Support for standard dos 3.3 disks is about 2/3
            finished.  See the status page for progress updates on this
            subject.  Right now only games contained in single files
            work because they require no interaction with the disk drive
            while running.
    * How does this work exactly?
          o See the "Technical Details" section for a better
            understanding of the inner workings.
    * Why java?  Why not C/C++/Pyton/Delphi?
          o Because I don't like answering the question "When will you
            support [*nix | mac | win32 | ...]".  Second to that, Java
            is what I use on a daily basis so my familiarity with it
            allows me to rapidly add new features.
          o Java is free and is already ported to many platforms, and as
            such it allows you to write cross-platform code that is both
            simple and elegant.  Not that I want to knock Mono here, but
            I'm not interested in learning a java variant when I can use
            the real deal, and I have a strong dislike for C/C++.
    * How do I add/remove games to the list?
          o Easy!  In the lib/data directory you'll find a file named
            games.xml.  This file contains information about all games
            in the lib/data/games subdirectory.  The game file names
            have a specific pattern inherited from the CiderPress tool
            -- though the actual file names really don't matter because
            the information is captured in XML. The file pattern is
            NNNNNN#TTAAAA where N is a shortened game name without
            spaces,  TT is the two-digit hexidecimal file type code (06
            = binary, FC = basic) and AAAA is the four-digit starting
            address where the file should be loaded in the apple's main
            memory.  Likewise, these values are also stored in the xml
            file.  As this xml format grows, it will be described in the
            Technical Details section.
    * Why do some games have an exclamation mark (!) in front of their
      names?
          o Because those games were tested and deemed not working.  So
            it's a warning to the user.  For now, when you try to play
            one of these games it will still try to load the game, but
            instead of starting it directly it will ask you to press
            ctrl-reset to start it once it is loaded.  This is so the
            apple firmware might reset other unknowns first.  It may or
            may not work but I figure it's better than nothing.
    * Why should I donate?
          o Ultimately, this should be a personal decision you make for
            yourself.  I'm not going to tell you one way or another if
            you should.  However, please know that any donations
            received will help me obtain equipment and other retro gear
            so I can do additional testing and start other homebrew
            projects in the future.  I'm not starving, but due to
            personal circumstances I have zero budget for
            non-discressionary spending at this point in time so it
            really helps in that sense.  It's also a form of
            encouragement that the long sleepless hours are worth it to
            someone out there.  :-)
    * I can't donate money but I would like to help.  What can I do?
          o Hardware donations are greatly appreciated.  A //c+, Laser
            128ex, eeprom burner, or a working dev board (ARM, Spartan
            FGPA, PIC -- I'm not picky) would be nice.  A CFFA would be
            beyond cool, but beggers can and will not be choosers in
            this case.  (however, I can think of several things I will
            not be able to get much use out of, so let's talk about it
            first -- email me at brendan.robert[at]gmail.[remove_this]com)
          o I included over 200 games with this program and can't play
            them all.  Also I can't test the ones that require a
            joystick because I no joystick (does this make me less of a
            man?)  So if you encounter a game that doesn't work, please
            post about it on the forums so that hopefully it can be
            fixed or at least diagnosed.
          o If you have an unenhanced //e, ][+ or //gs, I would like if
            you could give this a shot on those computers and let me
            know how it goes.  Again, post your findings on the forum --
            it will help others who might run in to the same issues.
    * What's the point of this project?  Why are you doing this?  Don't
      you have better things to do?
          o Greetings, non-geek reader.  (a real geek would never bother
            with such questions. You so-called "normal" people know who
            you are ;-)  The main goal is to play old retro apple games
            on actual retro apple hardware without using floppy disks.
             Mostly because I don't trust floppies, especially floppies
            that are old enough to legally buy alcohol and vote.
          o AppleWin and Kegs, among other emulators, are truly badass
            and more advanced that we could ever hope for.  These
            projects are still being actively improved each month.
             However, emulators will never be 100% exact replications
            of hardware.  As such, some games don't look exactly right
            or play as well as they do on hardware (e.g. money munchers
            by Bob Bishop).  By all means, if your favorite game works
            in AppleWin already and you'e happy with that then good for
            you.  Enjoy it.  Let the AppleWin folks know what doesn't
            work (beyond that which they already know about like mouse
            support, true SSC support and cycle-accurate video display
            -- the bug list is growing smaller and smaller and we're
            very fortunate for that.)
          o Finally, there's a good ol' nostalgic feel having a //e
            hooked up to the TV with the way-too-loud internal speaker
            blaring the moon patrol theme.  Either you dig it, or you
            don't.  ;-)


  Java Errors

    * "java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path"
          o This means you did not add the lib directory to java's
            classpath.  You can do so either by modifying the
            command-line syntax of how you are calling java (preferred
            method), or you can modify your environment variables to
            include the path.
          o It is also possible that you have already added the lib
            directory to the classpath, but have not downloaded the
            approriate binary distribution of RXTX
            <http://users.frii.com/jarvi/rxtx/download.html> for your
            platform and placed the files in there yet.  The binary and
            lib releases of A2GameServer only include the win32 libraries.
    * "Port X already in use" or "Port is not available"
          o Either you picked the wrong serial port, you have another
            instance of this program running already, or something else
            is holding that resource and won't let go of it.  An extreme
            situation I encountered was that I'm using a non-standard
            usb based serial port, which uses its own driver rather than
            the standard Windows one.  When I enabled hardware flow
            control (in an older version of the code that didn't respect
            the rules of flow control), the java program froze in a
            deadlock.  I couldn't force-quit the java program either.
             In fact, I couldn't even shut down without holding down the
            power button for 5 seconds!  Also, whenever I tried to start
            the program again (before rebooting) I got the message that
            the port was already in use.  If you are sure you're using
            the right port and no other serial-based programs are
            running, try to use another terminal program to use that port.
    * "Cannot write X", "Expected X but timed out"
          o This is because echo-check mode is enabled but the java
            program is likely not receiving data back from the apple.
             If you enable echo-check (!echo true in the init script)
            then you must ensure the apple is sending data to the PC
            (type pr#2 and test in a com program) -- you can either
            disable the echo-check mode (not recommended) or enable echo
            on the apple by typing this on the apple after IN#2:
                + Ctrl-A (should then see a special prompt) 2S
          o Note: The //c echoes received data to the serial port by
            default, whereas the SSC does not.
    * "Expected X but got Y"
          o The init or driver script have echo feedback mode enabled
            but is not receiving data back from the apple for some
            reason.  This could be because of a difference in baud rate
            settings, or possible also that the apple is not set for 8
            data bits, No parity and 1 stop bit.
    * "Timed out waiting to send data to remote host!"
          o This can only happen when hardware flow control is enabled.
             Make sure the apple needs flow control.  Try !flow XON or
            !flow NONE as alternatives if necessary.
    * "Failed to get response from driver after 3 retries"
          o If echo-check mode is disabled (set by adding !echo false in
            the init.txt script) then this means the apple was never
            able to receive data well enough to start up the serial
            driver program.  Check you can communicate with the apple
            using a regular serial communication program.
          o If the apple appears to be receiving data, check that the
            last line is 300g and not 30g.  I've seen this last line get
            mangled a few times randomly.  If you're quick on the draw,
            quickly type ctrl-x 300g (enter) before the java program
            completely gives up.

 